// 封装数据库的基本操作
const sql = {
  // 插入操纵
  insert (ColName, insertData) {
    console.log('11111111')
    return new Promise((resolve, reject) => {
      ColName.insertMany(insertData, (err) => {
        err ? reject(err) : resolve()
      })
    })
  },
  // 查询操作
  find (ColName, whereData, showData) {
    return new Promise((resolve, reject) => {
      ColName.find(whereData, showData).exec((err, data) => {
        err ? reject(err) : resolve(data)
      })
    })
  },
  // 查询分页操作
  paging (ColName, whereData, showData, limit, count) {
    return new Promise((resolve, reject) => {
      ColName.find(whereData, showData).limit(limit).skip(count * limit).exec((err, data) => {
        err ? reject(err) : resolve(data)
      })
    })
  },
  // 查询排序操作
  sort (ColName, whereData, showData, sortData) {
    return new Promise((resolve, reject) => {
      ColName.find(whereData, showData).sort(sortData).exec((err, data) => {
        err ? reject(err) : resolve(data)
      })
    })
  },
  // 更新数据库
  update (ColName, whereObj, updateObj, updateFlag) {
    // 如果updateFlag 为1 表示更新多条，其余为更新单条
    const updateType = updateFlag === 1 ? 'updateMany' : 'updateOne'
    // ColName[updateType] ===> updateFlag 1 ==> ColName.updateMany
    // ColName[updateType] ===> updateFlag 0 ==> ColName.updateOne
    return new Promise((resolve, reject) => {
      ColName[updateType](whereObj, updateObj, (err) => {
        err ? reject() : resolve()
      })
    })
  },
  // 删除数据
  delete (ColName, whereObj, deleteFlag) {
    // 如果deleteFlag 为1 表示删除多条，其余为删除单条
    const deleteType = deleteFlag === 1 ? 'deleteMany' : 'deleteOne'
    return new Promise((resolve, reject) => {
      ColName[deleteType](whereObj, (err) => {
        err ? reject(err) : resolve()
      })
    })

  },
  distinct (ColName, feild) {
    return new Promise((resovle, reject) => {
      ColName.distinct(feild).exec((err, data) => {
        err ? reject(err) : resovle(data)
      })
    })
  }
}
module.exports = sql